import 'package:cross_file/src/types/interface.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:image_picker/image_picker.dart';
import 'package:image_picker/image_picker_platform_interface.dart';
import 'package:image_picker/image_picker_method_channel.dart';
import 'package:image_picker/types/camera_device.dart';
import 'package:image_picker/types/image_options.dart';
import 'package:image_picker/types/image_source.dart';
import 'package:image_picker/types/lost_data_response.dart';
import 'package:image_picker/types/multi_image_picker_options.dart';
import 'package:plugin_platform_interface/plugin_platform_interface.dart';

class MockImagePickerPlatform
    with MockPlatformInterfaceMixin
    implements ImagePickerPlatform {

  @override
  Future<String?> getPlatformVersion() => Future.value('42');

  @override
  Future<XFile?> getImage({double? maxWidth, double? maxHeight, int? imageQuality, CameraDevice preferredCameraDevice = CameraDevice.rear}) {
    // TODO: implement getImage
    throw UnimplementedError();
  }

  @override
  Future<XFile?> getImageFromSource({ImagePickerOptions options = const ImagePickerOptions()}) {
    // TODO: implement getImageFromSource
    throw UnimplementedError();
  }

  @override
  Future<LostDataResponse> getLostData() {
    // TODO: implement getLostData
    throw UnimplementedError();
  }

  @override
  Future<List<XFile>?> getMultiImage({double? maxWidth, double? maxHeight, int? imageQuality}) {
    // TODO: implement getMultiImage
    throw UnimplementedError();
  }

  @override
  Future<List<XFile>> getMultiImageWithOptions({MultiImagePickerOptions options = const MultiImagePickerOptions()}) {
    // TODO: implement getMultiImageWithOptions
    throw UnimplementedError();
  }

  @override
  bool supportsImageSource(ImageSource source) {
    // TODO: implement supportsImageSource
    throw UnimplementedError();
  }
}

void main() {
  final ImagePickerPlatform initialPlatform = ImagePickerPlatform.instance;

  test('$MethodChannelImagePicker is the default instance', () {
    expect(initialPlatform, isInstanceOf<MethodChannelImagePicker>());
  });

}
